Non-volatile memory devices, such as flash memory devices, are used to store data and other kinds of information. Many computers and electronic devices, for example, digital audio players, digital cameras, digital recorders, and cellular phones, have flash memory devices. Flash memory devices may also be used as portable storage devices, such as portable Universal Serial Bus (USB) flash drives or “thumb” drives. Flash memory devices may not need power to maintain the information stored in the device.
NAND Flash memories are made up of multi-die (e.g. multi-lun) packages. These devices are often referred to as multi-lun flash memories. A multi-lun device has multiple logic units in a package that may share a common bus. These devices are often developed to be compliant with a common interface specification for an industry. For example one such specification is the ONFi (Open NAND Flash Interface) specification, developed to simplify integration of NAND Flash memory into consumer electronics devices, computing platforms and industrial systems. For more information regarding the ONFi specification, the reader is encouraged to consult the document “Open NAND Flash Interface Specification,” Revision 1.0, published by the ONFi Workgroup in 2006, and later versions.
The ONFi specification provides two ways to inquire as to the status of the multi-die package: a Read Status (70h) command that reads the status of all of the dice in a package, and a Read Status Enhanced (78h) command that reads each of the dice individually. In response, the dice provide their output to common bus.
There are potential drawbacks with the use of each command. For example, in a multi-die package, the Read Status Enhanced command operates so that the status of each die is read separately, taking a minimum of one command per die. On the other hand, using a Read Status command may cause unpredictable outputs on the bus if the data output from more than one die in a package is different from the output from the rest of the dice.
Consider a four die package that has received a Read Status command. In this case, all of the devices will transmit their status, and if one device is active and the other three devices are inactive, the output to the common bus will be unpredictable. This is defined as bus contention on the line. Specifically, the output may indicate that the package is inactive or ready to receive data in this situation. As a result the electronic system coupled to the package may try to write to the package before all of the dice are ready to receive data, which may cause the loss of data. Alternatively, as result of an inactive device indication, the system may run a Read Status Enhanced command to determine that all of the individual dice have actually been written, using several additional commands to determine the true status of the multi-die package. Therefore, there is a need for, among other things, methods, apparatus and systems to improve the management of bus contention on common outputs in these devices.